Modern software applications and systems can be extremely complex, and may contain thousands or millions of lines of interrelated code spread across numerous files. Modern programs are also more interdependent than ever on other programs. That is because Internet-based and other networked or otherwise connected systems continue to supplant stand-alone applications. Such networked applications may depend on many other programs to pass them appropriate data in order to run properly and without errors. Complex software systems carry with them a great risk of errors, such as so-called bugs.
This is particularly true of applications written for mobile platforms such as personal digital assistants and smartphones. Such mobile platforms often provide search and location-based services that require access to a central data provider such as GOOGLE, for providing maps information, search results, and other similar web-related content. As a result, such connected mobile devices must operate with systems that are out of the control of the person developing content for the mobile device.
Software generally is subjected to a number of iterative revisions as it moves from conception to initial launch (e.g., in alpha or beta test), and then through to commercial release. On its way to being complete, the software will invariably contain a number of bugs that must be eradicated. To find the bugs, a developer will generally need to test the software under simulated conditions, such as by providing it fake data and observing its response to such data